﻿#ifndef DACOREINTERFACE_H
#define DACOREINTERFACE_H
#include "DAInterfaceGlobal.h"
#include "DAGlobals.h"
#include <QObject>
class SARibbonMainWindow;

namespace DA
{
class DAAppUIInterface;
class DADataManagerInterface;
DA_IMPL_FORWARD_DECL(DACoreInterface)
/**
 * @brief APP的核心接口
 *
 * 所有接口都可以通过此接口获取，这个接口是最关键的接口
 */
class DAINTERFACE_API DACoreInterface : public QObject
{
    Q_OBJECT
    DA_IMPL(DACoreInterface)
public:
    DACoreInterface(QObject* parent = nullptr);
    virtual ~DACoreInterface();

    //获取DAAppRibbonAreaInterface
    virtual DAAppUIInterface* getUiInterface() const = 0;

    // python内核是否初始化成功
    virtual bool isPythonInterpreterInitialized() const = 0;

    //获取数据管理接口
    virtual DADataManagerInterface* getDataManagerInterface() const = 0;

public:
    //调用此函数，创建DAAppRibbonAreaInterface，此函数的调用应该发生在SARibbonMainWindow的构造过程
    virtual void createUi(SARibbonMainWindow* mainwindow) = 0;
};
}  // namespace DA
#endif  // DACOREINTERFACE_H
